package br.com.unip.menudroidweb.facade;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import br.com.unip.menudroidweb.dao.DispositivoDAO;
import br.com.unip.menudroidweb.model.Dispositivo;

import com.google.gson.Gson;

@Path("/dispositivo")
public class DispositivoFacade implements Serializable {
	private static final long serialVersionUID = 7626044516417662074L;
	private DispositivoDAO dispositivoDAO = new DispositivoDAO();

	@POST
    @Path("/inserir")
	@Consumes("application/json")
	public void createDispositivo(Dispositivo dispositivo) {
		dispositivoDAO.beginTransaction();
		dispositivoDAO.save(dispositivo);
		dispositivoDAO.commitAndCloseTransaction();
	}

	public void updateDispositivo(Dispositivo dispositivo) {
		dispositivoDAO.beginTransaction();
		Dispositivo persistedDispositivo = dispositivoDAO.find(dispositivo.getIdDispositivo());
		persistedDispositivo.setDescricao(dispositivo.getDescricao());
		persistedDispositivo.setIMEI(dispositivo.getIMEI());
		persistedDispositivo.setEndereco(dispositivo.getEndereco());
		persistedDispositivo.setBairro(dispositivo.getBairro());
		persistedDispositivo.setNumero(dispositivo.getNumero());
		persistedDispositivo.setTelefone(dispositivo.getTelefone());
		dispositivoDAO.update(persistedDispositivo);
		dispositivoDAO.commitAndCloseTransaction();
	}

	public Dispositivo findDispositivo(int dispositivoId) {
		dispositivoDAO.beginTransaction();
		Dispositivo dispositivo = dispositivoDAO.find(dispositivoId);
		dispositivoDAO.closeTransaction();
		return dispositivo;
	}


	@Path("{id}")
	@DELETE
	@Produces("application/json")
	public void deleteDispositivo(Dispositivo dispositivo) {
		dispositivoDAO.beginTransaction();
		Dispositivo persistedProduto = dispositivoDAO.findReferenceOnly(dispositivo.getIdDispositivo());
		dispositivoDAO.delete(persistedProduto);
		dispositivoDAO.commitAndCloseTransaction();
	}

	@GET
	@Path("/listar")
	@Produces("application/json")
	public String listarTodosAndroid() {
		dispositivoDAO.beginTransaction();
		ArrayList<Dispositivo> dispositivo =  (ArrayList<Dispositivo>) dispositivoDAO.findAll();
		dispositivoDAO.closeTransaction();
		return new Gson().toJson(dispositivo);
	}

	@GET
	@Path("/listar/{id}")
	@Produces("application/json")
	public String findDispositivoAndroid(@PathParam("id") int dispositivoId) {
		dispositivoDAO.beginTransaction();
		Dispositivo dispositivo = dispositivoDAO.find(dispositivoId);
		dispositivoDAO.closeTransaction();
		return new Gson().toJson(dispositivo);
	}
	
	public List<Dispositivo> listAll() {
		dispositivoDAO.beginTransaction();
		List<Dispositivo> dispositivo = dispositivoDAO.findAll();
		dispositivoDAO.closeTransaction();
		return dispositivo;
	}

}
